package org.iuniv.adb.patent.dao;

import java.util.List;
import java.util.Map;

import org.iuniv.adb.patent.model.Patent;

/**
 * @author ctran33
 *
 */
public interface PatentDao {

    /**
     * Method to get patent details by patent number
     *
     * @param patNumber
     * @return {@link Patent}
     * @throws Exception
     */
    public Patent getPatent(String patNumber) throws Exception;

    /**
     * Method to search patents based on basic query options (patent number or title)
     *
     * @param query
     * @return List of {@link Patent}
     * @throws Exception
     */
    public List<Patent> searchPatents(String query) throws Exception;

    /**
     * Method to search patents based on advanced search options
     *
     * @param mapAdvOpts {@link Map}
     * @return List of {@link Patent}
     * @throws Exception
     */
    public List<Patent> searchPatents(Map<String, Object> mapAdvOpts) throws Exception;
}
